<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
// 1.什么是框架
//     - 特征1 ：一堆代码的集合
//     - 特征2 : 一个半成品应用
//     - 特征3 ：包含了一些优秀的设计模式

// 2.为什么要使用框架
//   不使用框架的弊端
//     - 每个人代码风格不一样，不便于开发和后期维护
//     - 一小处的修改，会牵扯出很多地方的修改
//     - 在后期满足客户需求（功能拓展）存在局限性

// 使用框架的好处
//     - 使用框架会帮助我们简单快速高效的开发项目
//     - 可以然能给我们有更多时间专注于业务逻辑的开发，不需要关注底层架构
//     - 便于处理多人协作开发中遇到的问题


//MVC、MVP 和 MVVM 是三种常见的软件架构设计模式，主要通过分离关注点的方式来组织代码结构，优化我们的开发效率
       /*什么是MVC
         (jq就是 极限的操作dom)
         MVC是一种设计模式。他是将用户的输入、输出、逻辑相分离，将整个项目分为三个部分:
         - 控制器（controller）
         - 模型（Model）
         - 视图（View） 
        MVC 通过分离 Model、View 和 Controller 的方式来组织代码结构。
        View 负责页面的显示逻辑，
        Model 负责存储页面的业务数据，以及对相应数据的操作。
        View 和 Model 应用了观察者模式，当 Model 层发生改变的时候它会通知有关 View 层更新页面。
        Controller 层是 View 层和 Model 层的纽带，它主要负责用户与应用的响应操作，当用户与页面产生交互的时候，
        Controller 中的事件触发器就开始工作了，通过调用 Model 层，来完成对 Model 的修改，然后 Model 层再去通知 View 层更新。*/

//MVVM 模式中的 VM，
       //(vue 就是mvvm不操作dom(操作虚拟dom))
       /*指的是 ViewModel，它和 MVP 的思想其实是相同的，不过它通过双向的数据绑定，将 View 和 Model 的同步更新给自动化了。
        当 Model 发生变化的时候，ViewModel 就会自动更新；ViewModel 变化了，View 也会更新。这样就将 Presenter 中的工作给自动化了。
        我了解过一点双向数据绑定的原理，比如 vue 是通过使用数据劫持和发布订阅者模式来实现的这一功能。*/


//MVP 模式与 MVC 唯一不同的在于 Presenter 和 Controller。
        // 在 MVC 模式中我们使用观察者模式，来实现当 Model 层数据发生变化的时候，通知 View 层的更新。
        // 这样 View 层和 Model 层耦合在一起，当项目逻辑变得复杂的时候，可能会造成代码的混乱，并且可能会对代码的复用性造成一些问题。
        
        // MVP 的模式通过使用 Presenter 来实现对 View 层和 Model 层的解耦。MVC 中的
        // Controller 只知道 Model 的接口，因此它没有办法控制 View 层的更新，MVP 模式中，View 层的接口暴露给了 Presenter 
        // 因此我们可以在 Presenter 中将 Model 的变化和 View 的变化绑定在一起，以此来实现 View 和 Model 的同步更新。
        // 这样就实现了对 View 和 Model 的解耦，Presenter 还包含了其他的响应逻辑。







</script>